setTimeout(() => {
  console.log(1)
}, 0)
Promise.resolve().then(() => {
  console.log(3)
})
console.log(2)

/*
    js 是单线程的 运行时遵循事件循环机制

    -调用栈：全局作用域的代码 要放到栈里执行 立即执行的代码


    -任务队形：
         将要执行的代码 调用栈的代码执行完毕之后，队列里的代码才会进入栈中执行

         两种任务队列：
             1.宏任务队列：大部分的代码都会去到宏任务队列
             2.微任务队列：Promise的回调函数 .then .catch .finally

    执行顺序：调用栈 > 微任务队列 > 宏任务队列
    */

// node.js 与 js的区别
// dom bom(js特有的) ecma(node和js都有)